package;
import neko.FileSystem;
import neko.Lib;
import neko.Sys;
import neko.io.File;
import haxe.io.Bytes;

class ParseDisplay
{
	static var args:Array<String>;
	public static function main()
	{
		args = Sys.args();
		//trace(args);
		if(args.length!=0)
		{
			var out:String="";//"Error0";
			try
			{
				out = parseDisplay(args[0]);
			}
			catch(e:Dynamic){}
			Lib.print(out);
		}
		else
		{
			var stdin = neko.Sys.stdin();
			var bytes:haxe.io.Bytes = stdin.readAll();
			var string = bytes.toString();
			//Lib.print(string);
			var out:String=parseDisplay(string);
			Lib.print(out);
		}
	}
	static function parseDisplay(input)
	{
		var buf=new StringBuf();
		//trace(input);
		var xml = Xml.parse(input);
		var root = xml.firstElement();
		if(root == null)
		{
			return input.split(" ").join("_").split("\n").join("").split("\r").join("") + " ";
		}
		if(root.nodeName=="type")
		{
			var t = root.firstChild().toString();
			t = t.split("-&gt;").join("->").split(" ").join("").split("&lt;").join("<").split("&gt;").join(">").split("\n").join("").split("\r").join("");
			buf.add(t);
			buf.add(" ");
			return buf.toString();
		}
		for(i in root.elements())
		{
			switch(i.nodeName)
			{
				case "i":
					buf.add(i.get("n"));
					/*
					for(j in i.elements())
					{
						if(j.nodeName=="t")
						{
							var t = j.firstChild().toString();
							if(t.indexOf("-&gt;")!=-1)
							{
								t = "("+t.split("-&gt;").join("->").split(" ").join("").split("&lt;").join("<").split("&gt;").join(">") +")";
							}
							else
							{
								t = ":" + t.split(" ").join("").split("&lt;").join("<").split("&gt;").join(">") ;
							}
						}
					}
					*/
					
					//buf.add(t);
					buf.add(" ");
					
				case "default":
					
					
			}
		}
		return buf.toString();
	}
}